home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 145
/
Gekkan Dennou Club - 2000.6 Vol. 145 (Japan).7z
/
Gekkan Dennou Club - 2000.6 Vol. 145 (Japan) (Track 1).bin
/
games
/
spassion
/
source.lzh
/
SOURCE
/
TVRAM.S
< prev
next >
Wrap
Text File
|
2000-03-22
|
2KB
|
78 lines
* gvram テキスト画面に線を引く
.cpu 68000
*.include doscall.mac
*.include iocscall.mac
*.include my.mac
.xdef _DrawLine
*********************************************************
* 指定された位置から
* 長方形を描く
* (スーパーバイザに切り換えてから使用)
* *BOX_PTR
*********************************************************
_DrawLine:
.offset 0
STACK_G: .ds.l 1
RET_G: .ds.l 1
BOX_G: .ds.l 1
.text
.even
link a6,#0
movem.l d3-d5,-(sp)
*unsigned short *vp=(unsigned short *)(0xE00000+(y1*512+x1)*2);
move.l BOX_G(a6),a2 *a2=&box
move.w 2(a2),d1 *d1=y1
cmp.w #255,d1 *y1>255だったらリターン
bhi ret
move.w 6(a2),d4 *d4=y2
tst.w d4
bmi ret *y2<0だったらリターン
move.w 0(a2),d0 *d0=x1
tst.w d0 *if(x1<0)x1=0;
bpl next
clr.w d0
next:
lsr.w #3,d0 *d0=x1/8
* move.w 2(a2),d1 *d1=y1
lsl.w #7,d1 *d1=y*128
add.w d0,d1 *d1=y*128+x/8
lea.l $00E00000,a0 * TVRAM の左上アドレス
add.w d1,a0
move.w 4(a2),d1 *d1=X2
tst.w d1 *if(x2<0)x2=0;
bpl next1
clr.w d1
next1:
lsr.w #3,d1 *d1=x2/8
sub.w d0,d1 *d1=width-1
move.w d1,d3 *d3=width-1
move.w #128-1,d5 *d5=127
sub.w d3,d5 *本当は128-widthだが、本当は127-(width-1)で省略
move.w 2(a2),d0 *d0=Y1
move.w d4,d1 *d1=Y2
sub.w d0,d1
move.w 8(a2),d4 *d4=COL
y_loop_put:
move.w d3,d2
x_loop_put:
move.b d4,(a0)+ *線を引く
dbra d2,x_loop_put
add.w d5,a0
dbra d1,y_loop_put
ret:
movem.l (sp)+,d3-d5
unlk a6
rts
.end